package com.controller;

import com.context.conexion.EnahoConexion;
import util.controller.Vista;
import com.model.domain.persona.Encuestador;
import com.model.domain.persona.Personal;
import com.model.domain.tiempo.Actividad;
import com.model.domain.tiempo.Mes;
import com.model.domain.tiempo.Periodo;
import com.model.domain.tiempo.Quincena;
import com.model.domain.ubicacion.Conglomerado;
import com.model.domain.dinero.ConglomeradoPersonal;
import com.model.domain.dinero.ConglomeradoPersonalPeriodoReporte;
import com.model.domain.ubicacion.Odei;
import com.model.service.ConglomeradoPersonalService;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
import util.dinero.Dinero;

/**
 *
 * @author rdelacruz
 */
@Deprecated
public class ConglomeradoPersonalController 
extends AbstractController
{   
    
    //PROGRAMACION - PANTALLA 1
    public void verProgramacion(Vista v, HttpServletRequest request, HttpServletResponse response) throws Exception {
        Connection con = null;
        try {
            con = EnahoConexion.getConexion();
            setearCombos(con,request);
            
            ConglomeradoPersonalPeriodoReporte rep = new ConglomeradoPersonalPeriodoReporte();
            rep.setLista(new ArrayList<ConglomeradoPersonal>());
            request.setAttribute("rep", rep);
        }
        finally {
            if(con!=null) con.close();
        }
        v.setUrl("pagweb/rutas/antiguo/asignacion_partidas.jsp");
    }
    
    public void buscarProgramacion(Vista v, HttpServletRequest request, HttpServletResponse response) throws Exception {
        Conglomerado filtro = new Conglomerado();
        filtro.setAnho(request.getParameter("anho"));
        
        Mes m = new Mes();
        m.setCodigo(request.getParameter("mes"));
        filtro.setMes(m);
        
        Odei od = new Odei();
        od.setCodigo(request.getParameter("odei"));
        filtro.setOdei(od);
        
        Periodo p = new Periodo();
        p.setCodigo(request.getParameter("periodo"));
        filtro.setPeriodo(p);
        
        request.setAttribute("comando",filtro);
        
        Connection con = null;
        try {
            con = EnahoConexion.getConexion();
            ConglomeradoPersonalService service = (ConglomeradoPersonalService)this.getService();
            setearCombos(con,request);             
            request.setAttribute("rep", service.findReporteResumenProgramacionByFilter(con,filtro));
        }
        finally {
            if(con!=null) con.close();
        }
        v.setUrl("pagweb/rutas/antiguo/asignacion_partidas.jsp");
    }

    //DATOS PARA PROGRAMACION - PANTALLA 2
    private void setearModeloDetalleProgramacion(Connection con, HttpServletRequest request, ConglomeradoPersonal filtro) throws SQLException, ParseException {
        ConglomeradoPersonalService service = (ConglomeradoPersonalService)this.getService();
        
        String codCong = filtro.getConglomerado().getCodigo();
        Conglomerado c = service.getConglomeradoService().findDistritoByCodigo(con,codCong);
        if(c!=null)
            service.getConglomeradoService().setearCentrosPoblados(con,c);
        
        Conglomerado c1 = service.getConglomeradoService().findAnhoMesPeriodoByCodigo(con, codCong);
        c.setAnho(c1.getAnho());
        c.setMes(c1.getMes());
        c.setPeriodo(c1.getPeriodo());
        filtro.setConglomerado(c);

        List<Encuestador> encuestadores;
                
        if(filtro.getPersonal()!=null && filtro.getPersonal().getDni()!=null) {
            //obtener solo una lista con el personal dado por el dni
            encuestadores = service.getEncuestadorService()
                    .findByCodigo_codigoNombreCargoNroEntrevistasAnhoPasado(con, filtro.getPersonal().getDni());            
        }
        else {
            //obtener una lista con todo el personal menos el personal ya asignado al conglomerado
            encuestadores = service.findPosiblesEncuestadoresExceptoAsignadosAlConglomerado_YAnhoPasadoSiEsPanel_codigoNombre(con
                            ,filtro.getConglomerado().getCodigo());            
        }
        request.setAttribute("encuestadores", encuestadores);
        
        request.setAttribute("periodos", service.getPeriodoService().findAll(con));

        List<Actividad> actividades = service.getActividadService().findAll(con);
        request.setAttribute("actividades", actividades);    

        //List<Partida> partidas = service.getPartidaService().findAll(con);
        //request.setAttribute("partidas", partidas);

        ConglomeradoPersonalPeriodoReporte rep = service.findReporteDetalleProgramacionByFilter(con, filtro);
        request.setAttribute("rep", rep);
        
        request.setAttribute("filtro", filtro);
    }
    
    
    //****************************************************************************
    
    public void eliminar(Vista v, HttpServletRequest request, HttpServletResponse response) throws Exception {
                
        ConglomeradoPersonal filtro = new ConglomeradoPersonal();
        
        Conglomerado c = new Conglomerado();
        filtro.setConglomerado(c);
        c.setCodigo(request.getParameter("c"));
        
        Personal p = new Personal();
        filtro.setPersonal(p);
        p.setDni(request.getParameter("p"));
                
        filtro.setDia(request.getParameter("d"));
        
        Actividad a = new Actividad();
        filtro.setActividad(a);
        a.setCodigo(request.getParameter("a"));
                        
        Connection con = null;
        try {
            con = EnahoConexion.getConexion();
            ConglomeradoPersonalService service = (ConglomeradoPersonalService)this.getService();
            service.eliminar(con,filtro);
            
            setearModeloDetalleProgramacion(con,request,filtro);
        }
        finally {
            if(con!=null) con.close();
        }
        
        v.setUrl("pagweb/rutas/antiguo/asignacion_partidas_detalle.jsp");
        
    }
    
    public void json(HttpServletRequest request, HttpServletResponse response) throws Exception {
                
        ConglomeradoPersonal filtro = new ConglomeradoPersonal();
        
        Conglomerado c = new Conglomerado();
        filtro.setConglomerado(c);
        c.setCodigo(request.getParameter("conglomerado"));        
        
        Personal p = new Personal();
        filtro.setPersonal(p);
        p.setDni(request.getParameter("encuestador"));
                
        filtro.setDia(request.getParameter("dia"));
        
        Actividad a = new Actividad();
        filtro.setActividad(a);
        a.setCodigo(request.getParameter("actividad"));
                        
        Connection con = null;
        try {
            con = EnahoConexion.getConexion();
            ConglomeradoPersonalService service = (ConglomeradoPersonalService)this.getService();
            ConglomeradoPersonal cp = service.findByFilter(con,filtro);
            
            String jsonString = "{}";
            if(cp!=null) {
                JSONObject json = new JSONObject();
                json.put("viaticosR", cp.getViaticosR().getValor());
                json.put("viaticosU", cp.getViaticosU().getValor());
                json.put("pasajes", cp.getPasajes().getValor());
                json.put("mov_local", cp.getMovilidadLocal().getValor());
                json.put("mat_escritorio", cp.getMaterialEscritorio().getValor());
                json.put("internet", cp.getInternet().getValor());
                json.put("observacion", cp.getObservacion());

                jsonString = json.toString();             
            }
            
            response.setContentType("application/json;charset=UTF-8");
            response.getWriter().append(jsonString);
        }
        finally {
            if(con!=null) con.close();
        }
        
    }

    private void setearCombos(Connection con, HttpServletRequest request) throws SQLException {
        ConglomeradoPersonalService service = (ConglomeradoPersonalService)this.getService();
        request.setAttribute("anhos", service.getConglomeradoService().findAnhos(con));
        request.setAttribute("meses", service.getMesService().findAll(con));
        request.setAttribute("odeis", service.getOdeiService().findAll(con));
        request.setAttribute("periodos", service.getPeriodoService().findAll(con));
        
        List<Quincena> quincenas = new ArrayList<Quincena>();
        
        Quincena q1 = new Quincena();
        q1.setCodigo("1");
        q1.setNombre("Primera quincena");
        quincenas.add(q1);
        
        Quincena q2 = new Quincena();
        q2.setCodigo("2");
        q2.setNombre("Segunda quincena");
        quincenas.add(q2);
        
        request.setAttribute("quincenas", quincenas);
    }
    
    public void verResumen(Vista v, HttpServletRequest request, HttpServletResponse response) throws Exception {
        Connection con = null;
        try {
            con = EnahoConexion.getConexion();
            setearCombos(con,request);
        }
        finally {
            if(con!=null) con.close();
        }
        v.setUrl("pagweb/rutas/antiguo/resumen_partidas.jsp");
    }
    
    public void buscarResumen(Vista v, HttpServletRequest request, HttpServletResponse response) throws Exception {
        Conglomerado filtro = new Conglomerado();
        filtro.setAnho(request.getParameter("anho"));
        
        Mes m = new Mes();
        m.setCodigo(request.getParameter("mes"));
        filtro.setMes(m);
        
        Odei od = new Odei();
        od.setCodigo(request.getParameter("odei"));
        filtro.setOdei(od);
        
        Periodo p = new Periodo();
        p.setCodigo(request.getParameter("periodo"));
        filtro.setPeriodo(p);
        
        Quincena q = new Quincena();
        q.setCodigo(request.getParameter("quincena"));
        filtro.setQuincena(q);
        
        request.setAttribute("comando",filtro);
        
        Connection con = null;
        try {
            con = EnahoConexion.getConexion();
            ConglomeradoPersonalService service = (ConglomeradoPersonalService)this.getService();
            setearCombos(con,request);             
            request.setAttribute("rep", service.findReporteResumenAsignacionByFilter(con,filtro));
        }
        finally {
            if(con!=null) con.close();
        }
        v.setUrl("pagweb/rutas/antiguo/resumen_partidas.jsp");
    }
    
    
    
    
    
    public void nuevo(Vista v, HttpServletRequest request, HttpServletResponse response) throws SQLException, Exception {
        /*
        ModeloCommand modelo = new ModeloCommand() {
            @Override
            public void execute() throws Exception {
                ConglomeradoPersonal comando = (ConglomeradoPersonal)this.getComando();
                ConglomeradoPersonalService service = (ConglomeradoPersonalService)getService();
                List<Encuestador> encuestadores = service.getEncuestadorService().findPosiblesEncuestadores_codigoNombre(this.getCon());
                this.getRequest().setAttribute("encuestadores", encuestadores);
            }
        };
        */  
        ConglomeradoPersonal filtro = new ConglomeradoPersonal();
        setearNuevo(v,filtro,request);
    }
    
    public void editar(Vista v, HttpServletRequest request, HttpServletResponse response) throws SQLException, Exception {
        ConglomeradoPersonal filtro = new ConglomeradoPersonal();
        
        Personal p = new Personal();
        filtro.setPersonal(p); 
        p.setDni(request.getParameter("p")); 
        
        /*
        ModeloCommand modelo = new ModeloCommand() {
            @Override
            public void execute() throws Exception {
                ConglomeradoPersonalService service = (ConglomeradoPersonalService)getService();
                List<Encuestador> encuestadores = service.getEncuestadorService().findPosiblesEncuestadores_codigoNombre(this.getCon());
                this.getRequest().setAttribute("encuestadores", encuestadores);
            }
        };
        */
        setearNuevo(v,filtro,request);
    }
    
    private void setearNuevo(Vista v, ConglomeradoPersonal filtro, HttpServletRequest request) throws SQLException, Exception {        
        //ConglomeradoPersonal filtro = new ConglomeradoPersonal();
                     
        Conglomerado c = new Conglomerado();
        c.setCodigo(request.getParameter("c"));        
        filtro.setConglomerado(c);        
        
        Connection con = null;
        try {
            con = EnahoConexion.getConexion();            
            setearModeloDetalleProgramacion(con,request,filtro);            
        }
        finally {
            if(con!=null) con.close();
        }
        v.setUrl("pagweb/rutas/antiguo/asignacion_partidas_detalle.jsp");
    }
        
    public void guardar(Vista v, HttpServletRequest request, HttpServletResponse response) throws SQLException, Exception {
        
        ConglomeradoPersonal comando = new ConglomeradoPersonal();
        
        Conglomerado c = new Conglomerado();
        comando.setConglomerado(c);
        c.setCodigo(request.getParameter("conglomerado"));
        
        Encuestador e = new Encuestador();
        comando.setPersonal(e);
        e.setDni(request.getParameter("encuestador"));
        
        comando.setDia(request.getParameter("dia"));
        
        Actividad a = new Actividad();
        comando.setActividad(a);
        a.setCodigo(request.getParameter("actividad"));
        
        comando.setPasajes(new Dinero(request.getParameter("pasajes")));
        comando.setViaticosR(new Dinero(request.getParameter("viaticosR")));
        comando.setViaticosU(new Dinero(request.getParameter("viaticosU")));
        comando.setMovilidadLocal(new Dinero(request.getParameter("movilidadLocal")));
        comando.setMaterialEscritorio(new Dinero(request.getParameter("materialEscritorio")));
        comando.setInternet(new Dinero(request.getParameter("internet")));
        
        comando.setObservacion(request.getParameter("observacion"));
        
        //Partida p = new Partida();
        //comando.s
        //p.setCodigo(request.getParameter("partida"));
        //comando.setDia(request.getParameter("dia"));
        
        Connection con = null;
        try {
            con = EnahoConexion.getConexion();
            
            ConglomeradoPersonalService service = (ConglomeradoPersonalService)this.getService();
            service.guardar_actualizar(con, comando);  
            
            setearModeloDetalleProgramacion(con,request,comando);
        }
        finally {
            if(con!=null) con.close();
        }     
        
        v.setUrl("pagweb/rutas/antiguo/asignacion_partidas_detalle.jsp");
    }

    

    
    
    
}
